﻿<%@ WebHandler Language="C#" Class="MyGravatar" %>

using System;
using System.Web;
using System.Data;
using System.Data.Common;
using System.Web.SessionState;
using System.Globalization;
using System.Collections;
using System.IO;

/// <summary>
/// 因为网站二次更改模板时候，图片需要重新生成缩略图。这类可以完成重置相关的生成过程。
/// </summary>
public class MyGravatar : IHttpHandler, IRequiresSessionState
{
    /// <summary>
    /// 多文件上传时使用的统计器
    /// </summary>
    public static int MyCounter = 0;
    private int Obj_typ = 2;

    public void ProcessRequest(HttpContext context)
    {

        /* 管理员信息验证 */
        if (!Admins.IsLogin(true))
            Utils.ShowEnd(context, -2);

        /* 外部数据接收 */
        Obj_typ = Utils.GetQueryString("obj_typ", 2);
        int item_lang = Utils.GetQueryString("lang", 1);

        /* 数据库读取 */
        Product product = new Product();
        DataSet Ds = product.List(0, 200, item_lang);

        if (Ds.Tables.Count > 0)
        {
            DataTable dt = Ds.Tables[0];
            foreach (DataRow var in dt.Rows)
            {
                DataRow dr = var;

                /* 数据库处理,组成原始物理地址 */
                string Item_Id = dr["Item_Id"].ToString();
                DateTime create_time = Convert.ToDateTime(dr["Create_Time"].ToString());
                string FileFolder = "../DataFile/Product/" + create_time.ToString("yyyyMM") + "/" + create_time.ToString("ddHHmmss") + ".jpg";

                // 清除目标文件，如果不存在不报错 
                File.Delete(context.Server.MapPath(FileFolder.Replace(".jpg", "_s.jpg")));
                File.Delete(context.Server.MapPath(FileFolder.Replace(".jpg", "_ss.jpg")));
                File.Delete(context.Server.MapPath(FileFolder.Replace(".jpg", "_sss.jpg")));

                //重新生成新规格的图片文件
                Thumbnail.MakeThumbnail(context.Server.MapPath(FileFolder), context.Server.MapPath(FileFolder.Replace(".jpg", "__p.jpg")), 340, 320, "Cut", 97);
                Thumbnail.MakeThumbnail(context.Server.MapPath(FileFolder), context.Server.MapPath(FileFolder.Replace(".jpg", "__p_p.jpg")), 360, 542, "Cut", 97);
                Thumbnail.MakeThumbnail(context.Server.MapPath(FileFolder), context.Server.MapPath(FileFolder.Replace(".jpg", "__p_p_p_p.jpg")), 80, 80, "Cut", 97);

                MyCounter++;
            }
        }
        Utils.ShowEnd(context, MyCounter);


    }
    public bool IsReusable { get { return false; } }
}